昨天我們學習了最基礎的用 var 宣告一個或多個變數 (variables) ,以及可以省略型別或是初始值,今天立馬學習用短變數宣告、一次宣告多個變數以及如何更改變數值吧!
若是在函式 (function) 內宣告變數(包括 main() ),可以用 :=
的簡寫來宣告變數,此種宣告方法也可以稱為短變數宣告( short variable declaration ),跟一般宣告變數有三個差異:
<變數名稱> := <初始值>
範例6:
package main
import (
"fmt"
"time"
)
func main() {
isRain := false
month := "September"
today := time.Now()
fmt.Println(isRain, month, today)
}
範例6 執行結果:
false September 2022-08-07 23:51:18.987907 +0800 CST m=+0.000220876
補充:
短變數宣告在 Go 語言中是最常見的變數定義方式,他可以讓程式碼看起來更短更精簡。
我們可以把上方範例6三種用短變數宣告的程式碼,再更精簡成一行寫完,若想用短變數宣告多個變數時,需注意變數數量必須等於初始質數量 。
<變數名稱 1>, <變數名稱 2>, ... , <變數名稱 N> := <初始值 1>, <初始值 2>, ... , <初始值 N>
範例7:
package main
import (
"fmt"
"time"
)
func main() {
isRain, month, today := false, "September",time.Now()
fmt.Println(isRain, month, today)
}
範例7 執行結果:
false September 2022-08-07 23:51:18.987907 +0800 CST m=+0.000220876
雖然此種方法閱讀性比較沒那麼直觀,但若是需要呼叫要回傳多個值的函式時,就有可能會遇到此種寫法。
若我們需要一次宣告多個同型別,或是一次宣告多個同初始值的變數時,可使用 var 宣告多重變數
var <變數 1>, <變數 2>, ... , <變數 N> <型別>
var <變數 1>, <變數 2>, ... , <變數 N> = <初始值>
範例8:
package main
import (
"fmt"
"time"
)
func getWeatherDate() (bool, string, time.Time) {
return false, "September",time.Now()
}
func main() {
// 只提供型別
var start, middle, end float32
fmt.Println(start, middle, end)
// 不同型別的初始值
var name, left, right, top, bottom = "krystal", 1, 1.5, 2, 2.5
fmt.Println(name, left, right, top, bottom)
// 也可以呼叫其他函式
var isRain, month, today = getWeatherDate()
fmt.Println(isRain, month, today)
}
範例8 執行結果:
0 0 0
krystal 1 1.5 2 2.5
false September 2022-08-08 00:24:55.390563 +0800 CST m=+0.000150404
Go 語言支援 UTF-8 編碼,所以若是想用中文、日文、韓文等,來作為變數名稱都是可以的,但要特別注意:首字字母起頭必須是 字母 或是 底線_。
範例9:
package main
import (
"fmt"
"time"
)
func main() {
我的名字 := "krystal"
나이 := 18
fmt.Println(我的名字, 나이)
}
範例9 執行結果:
krystal 18
在學會了以上的變數宣告方法後,讓我們來學習如何更改單個及多個變數值吧!
我們利用範例來看看,如何將變數從初始值改為另一個值
範例10:
package main
import (
"fmt"
)
func main() {
age := 18
fmt.Println(age)
age = 20 // 將 age 從 18 改為 20
fmt.Println(age)
}
範例10 執行結果:
18
20
一次更改多個變數值,其實也大同小異,就是使用逗號做分隔,直接透過範例來看看吧!
範例11:
package main
import (
"fmt"
)
func main() {
// 宣告多個變數且賦予其初始值
isRain, month, day := false, "September", 3
// 一次更改多個變數值
isRain, month, day = true, "July", 8
fmt.Println(isRain, month, day)
}
範例11 執行結果:
true July 8
雖然一次更改多個變數值,可以減少很多程式碼,但考量到程式碼的易讀性,有時候寫成三行,或許會更讓看的人一目了然喔!
範例12:
package main
import (
"fmt"
)
func main() {
// 宣告多個變數且賦予其初始值
isRain, month, day := false, "September", 3
// 有時一一更改變數值,可提高程式碼的易讀性,讓看的人一目了然
isRain = true
month = "July"
day = 8
fmt.Println(isRain, month, day)
}
範例12 執行結果:
true July 8 // 與範例 11 結果相同
補充:
正常來說,不能對已經宣告過的變數,再使用短變數宣告賦值,除非短變數左側有多重變數,且其中有一個或以上是之前沒有的新變數,那就可以對已經宣告過的變數,再使用短變數宣告賦值呦!
今天介紹了完整的變數宣告,明天再繼續介紹在 Go 中的算符(operators)是什麼,那我們明天見!